OneThird CMSにおけるページレタリングの流れを説明します
1) ページURLリクエストでindex.phpが呼ばれる
2) page_rendererが呼ばれる
3) 各種プログラムによって $html をセットする
4) $htmlを echoする
OneThirdではmod_rewriteにより、ページURLリクエスト(素材や、JS、CSS以外のページリクエスト)は全てindex.phpが呼ばれます
index.phpでは、
1) ユーザーのログイン処理(basic_initialize)
2) $configの設定、$paramsの設定
が行われます
次に標準プラグイン(/plugin.php)と、ユーザープラグイン(/files/1/plugin.php)を読み込み
最後に、URLの一次解析をおこない、メンバー一覧、やアクションログ等の特殊ページの振り分けを行います
次に、index.phpはpage_rendererを呼び出します
page_rendererでは、URLの二次解析を行います
二次解析では、ページURLなのかプラグインURLなのかを判断、カノニカルの判断も同時に行います
ここでセットされる$paramsは、以下のとおり
$params['request'] ... $_SERVER['REQUEST_URI']とほぼ同じ
$params['arg'] ... URLのGETクエリー
$params['canonical'] ... ページカノニカル
$params['plugin'] ... プラグイン情報(プラグインページの場合)
$params['template'] ... テンプレートファイル
$params['top_page'] ... トップページか?
次に、ページURLの場合は、ページのデータを読み込みます
読み込んだデータは
$params['page']
に保存されます
最後に、ページプロパティで設定された、ページテンプレートとページphpプログラムを呼び出し、対応する各種レンダラーを呼び出します
****/login
のように、URL型プラグインはここで直接プラグインレンダラーが呼び出されその他は、basic_rendererが呼び出されます
page_rendererによって呼び出された各種レンダラーでは、$html内の出力バッファにデータをセットすることになります
標準レンダラーは
basic_rendererであり
basic_renderer内で、ページタイプを参照し、
type=1の通常ページの場合はbody_rendererが呼ばれます
それ以外のプラグインページでは、対応するプラグインレンダラーが呼び出されます
OneThirdでは独自のブロックタイプのレタリングシステムを採用しています
$params['page']['meta']['renderer']
にインナーページの情報が収められていて、それに従い順次リンクされた下位ページをページ内にレタリングしていきます
なお、ページに設定されたページphpプログラムがわで$params['rendering']がセットされると、標準レンダラーbody_rendererの呼び出しはスキップされます
レンダラーがレタリングした後、最後にexpand_circle_htmlにより、タグのバッファ展開を行い、最終的にechoされます
ただし、レンダラー内で$params['exit']がセットされた場合は、バッファ展開を行わずにプログラムを中断します